// IProtocol645Manager.aidl
package com.sgcc.pda.hw;
import com.sgcc.pda.hw.ReturnResult;
// Declare any non-default types here with import statements

interface IProtocol698Manager {

    /**
     * 698表组装安全传输报文
     * @param meterAddress 表通讯地址
     * @param taskData     数据
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult safeTrans(String meterAddress, String taskData, int mode,boolean checkDar);

    /**
     * 698表密钥下装分帧 处理
     *
     * @param meterAddress 表通讯地址
     * @param taskDatas    APDU
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult myxzsSafeTrans(String meterAddress, String taskDatas, int mode,boolean checkDar);

    /**
     * 密钥协商建立连接
     *
     * @param meterAddress 表通讯地址
     * @param m1           APDU
     * @param s1           APDU
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult myxs(String meterAddress, String m1, String s1, int mode,boolean checkDar);

    /**
     * 获取698表esam信息
     *
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getEsamInfoFrame(String meterAddress, int mode,boolean checkDar);

    /**
     *
     *获取698表esam号
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getEsamNum(String meterAddress, int mode,boolean checkDar);

    /**
     *
     *获取698表表号
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getMeterNum(String meterAddress, int mode,boolean checkDar);

    /**
     *
     *获取698表电表状态
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getMeterStatu(String meterAddress,String taskData, int mode,boolean checkDar);

    /**
     *
     *获取698表通信地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getMeterAddress(int mode,boolean checkDar);

    /**
     *
     *获取698表电表时间
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getMeterTime(String meterAddress, int mode,boolean checkDar);

    /**
     *
     * 读取698表当前正向有功电能数据
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getCurrentEnergy(String meterAddress, int mode,boolean checkDar);/**
     *
     * 读取698表当前反向向有功电能数据
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getCurrentReverse(String meterAddress, int mode,boolean checkDar);/**
     *
     * 读取698表当前电压
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getCurrentU(String meterAddress, int mode,boolean checkDar);
    /**
     *
     * 读取698表当前电流
     * @param meterAddress 表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult getCurrentI(String meterAddress, int mode,boolean checkDar);

    /**
     *
     *698表电表校时
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult checkTime(int mode,boolean checkDar);

    /**
     * 698表红外认证请求
     * @param meterAddress      通信地址
     * @param random1         随机数1
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     * :List<String> datas（code==0）:
     * 0:linkUserData      返回-表号
     * :List<String> datas(code==其他): size==1
     * 0:错误描述
     */
    ReturnResult infraGetRandom1Ciper(String meterAddress, String random1, int mode,boolean checkDar);

    /**
     * 698表红外认证指令
     * @param context
     * @param meterAddress  通信地址
     * @param random2Cipher  随机数密文2
     * @param mode
     * @return
     */
    ReturnResult infraCheckRandom2Ciper(String meterAddress, String random2Cipher, int mode,boolean checkDar);

         /**
         * 读取集中器日冻结正向有功电能数据
         * @param meterAdress 地址
         * @param taskData 任务数据
         * @return
         */
    ReturnResult getDayFreezEnergy(String meterAdress,String taskData);
         /**
         * 集中器
         * 解密电表返回的密文数据
         *
         * @param tfdDownFrame 执行跳闸命令电表返回报文
         * @return 成功返回链路数据   失败 返回空
         */
       ReturnResult  parserJzqBcFrame(String bcDownFrame);

       /**
            * 设置通信超时时间，如何串口已经打开，则改变为关闭状态，需要重新打开后生效
            *
            * @param sendTimeOut    发送超时时间 毫秒
            * @param receiveTimeOut 接收超时时间 毫秒
            */
             void setInfraTimeOut(int sendTimeOut, int receiveTimeOut) ;
                /**
                  * 698表组装安全传输报文
                  * @param meterAddress 表通讯地址
                  * @param taskData     数据
                  * @param mode         通讯方式：0 红外  1 串口(485线)
                  * @return ReturnResult  :int code  0 成功  其他失败
                  * :List<String> datas（code==0）:
                  * 0:linkUserData      返回-表号
                  * :List<String> datas(code==其他): size==1
                  * 0:错误描述
                  */
                 ReturnResult safeTransSc(String meterAddress, String taskData, int mode,boolean checkDar);
                 ReturnResult safeTransOAD(String meterAddress, String oi, int mode,boolean checkDar);
                 /**
                 * 根据数据域生成698报文
                 * @param dataSpace 数据域
                 * @param comAddr  通讯地址
                 * @return
                 */
                 ReturnResult build698Frame(String dataSpace,String comAddr);
}
